package com.penghaisoft.microwms.base.web.data.controller;

import com.penghaisoft.microwms.base.web.data.service.IMdWorkareaService;
import com.penghaisoft.microwms.common.controller.BaseController;
import com.penghaisoft.microwms.common.data.model.MdWorkarea;
import com.penghaisoft.microwms.common.dto.BuzUserWorkArea;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.dto.TransResult;
import com.penghaisoft.microwms.common.page.Pager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Description 工作区管理
 * @author luoteng
 * @date 2017年5月24日 下午2:01:03
 * @version 1.0
 */
@RestController
@RequestMapping(value = "/workarea")
@Slf4j
public class MdWorkareaController extends BaseController {

	@Autowired
	private IMdWorkareaService mdWorkareaService;

	/**
	 * @Title create
	 * @Description 新增记录
	 * @author luoteng
	 * @date 2017年5月24日 下午2:01:19
	 * @param mdWorkarea
	 * @return TransResult
	 */
	@PostMapping("c")
	public TransResult create(MdWorkarea mdWorkarea) {
		mdWorkarea.preInsert();
		mdWorkarea.setFactoryCode(getCurrentFactoryCode());
		mdWorkarea.setCreateBy(getLoginName());
		mdWorkarea.setLastModifiedBy(getLoginName());
		Resp resp = mdWorkareaService.create(mdWorkarea);
		return fromResp(resp);
	}

	/**
	 * @Title delete
	 * @Description 删除记录（逻辑删除active_flag=0)
	 * @author luoteng
	 * @date 2017年5月24日 下午2:01:34
	 * @param mdWorkarea
	 * @return TransResult
	 */
	@PostMapping("d")
	public TransResult delete(MdWorkarea mdWorkarea) {
		mdWorkarea.preUpdate();
		Resp resp = mdWorkareaService.delete(mdWorkarea);
		return fromResp(resp);
	}

	/**
	 * @Title list
	 * @Description 查询列表
	 * @author luoteng
	 * @date 2017年5月24日 下午2:01:51
	 * @param page
	 * @param rows
	 * @param mdWorkarea
	 * @return TransResult
	 */
	@PostMapping("list")
	public TransResult list(
			@RequestParam(name = "page", defaultValue = "1") int page,
			@RequestParam(name = "rows", defaultValue = "10") int rows,
			MdWorkarea mdWorkarea) {
		mdWorkarea.setFactoryCode(getCurrentFactoryCode());
		Pager<MdWorkarea> result = mdWorkareaService.findListByCondition(page,
				rows, mdWorkarea);
		return success(result);
	}

	/**
	 * @Title queryById
	 * @Description 查询单条
	 * @author luoteng
	 * @date 2017年5月24日 下午2:02:08
	 * @param id
	 * @return TransResult
	 */
	@GetMapping("r/{id}")
	public TransResult queryById(@PathVariable String id) {
		MdWorkarea mdWorkarea = mdWorkareaService.findById(id);
		return success(mdWorkarea);
	}

	/**
	 * @Title update
	 * @Description 修改记录
	 * @author luoteng
	 * @date 2017年5月24日 下午2:02:24
	 * @param mdWorkarea
	 * @return TransResult
	 */
	@PostMapping("u")
	public TransResult update(MdWorkarea mdWorkarea) {
		mdWorkarea.preUpdate();
		mdWorkarea.setFactoryCode(getCurrentFactoryCode());
		mdWorkarea.setLastModifiedBy(getLoginName());
		Resp resp = mdWorkareaService.update(mdWorkarea);
		return fromResp(resp);
	}

	/**
	 * @Title queryWorkAreasUnderFactoryWh
	 * @Description 查询以工厂归类的可用工作区
	 * @author zhangxu
	 * @date 2017年5月24日 下午2:02:44
	 * @return TransResult
	 */
	@GetMapping("r/factory/wh")
	public TransResult queryWorkAreasUnderFactoryWh() {
		List<BuzUserWorkArea> buzUserWorkAreas = mdWorkareaService
				.queryWorkAreasUnderFactoryWh();
		return success(buzUserWorkAreas);
	}
	
	@PostMapping("queryWorkAreas")
	public TransResult queryWorkAreasUnderWh(MdWorkarea mdWorkarea){
		mdWorkarea.setFactoryCode(getCurrentFactoryCode());
		mdWorkarea.setActiveFlag("1");
		List<MdWorkarea> mdWorkAreas = mdWorkareaService
				.queryWorkAreasUnderWh(mdWorkarea);
		return success(mdWorkAreas);
	}
	
}
